In many computing environments, a database may be replicated in multiple, geographically-dispersed computers, not only to increase the availability and reliability of information, but also to increase the speed at which information is accessed. Typically, one database is a "master" database, wherein changes, updates, and record deletions are made. The remaining databases are referred to as "replica" databases. Of major concern in such an environment is insuring that any changes made to the master database are also incorporated within the replica databases. "Database synchronization" is the term for various techniques for insuring that a replica database is updated to reflect the current revision of its master database.
Many database synchronization techniques rely on two-way communication between a computer containing the master database and a computer containing a replica database. In one method, computers containing replica databases are programmed to initiate a conversation with the computer containing the master database and request that all updates and changes made since the last conversation be transmitted. Typically, each master database record changed is "time-stamped" with the date and time of the update. A comparison is made between the time-stamp for each updated or changed record in the master database and the time-stamp information of the requesting replica database. Those records having a time-stamp later than the time-stamp of the requesting database, or later than the last conversation, will be transmitted. See, for example, U.S. Pat. No. 5,261,094 to Everson et al. Unfortunately, the use of time-stamps can be unsatisfactory if the clocks of the computer containing the master database and the computer containing the replica database are not synchronized.
Another method for synchronizing a master database and a plurality of replica databases involves locking the master database and transmitting updates to each replica at the same time. This technique insures that all replicas are updated at the same time and that no changes can be made to the master database during this time period. Unfortunately, this procedure is disadvantageous for several reasons. First of all, it may not be desirable to lock the master database while changes are being identified and transmitted. No changes or updates can occur during the broadcast to the remote locations, consequently the master database is unavailable for use. Additionally, if a computer containing a replica database is not available for receiving the updates from the master database, then the master database has to be locked again and the changes transmitted when the computer is available.
Another synchronization method involves transmitting the entire master database at predetermined intervals to each replica site. This method is typically used in computer systems linked by receive-only communications, such as one-way satellite transmission systems. Unfortunately, the lack of two-way communication prohibits the remote location from acknowledging to the master database computer whether it received any particular transmission. As a result, database synchronization in a receive-only network is insured by transmitting the entire database many times. Unfortunately, multiple retransmissions of an entire database can be cumbersome, inefficient, and costly. This method may also require locking the master database during transmission.
Another drawback common to many of the existing database synchronization methods is that each remote site must be active in order to receive the transmitted database changes. If one site is inactive during transmission, the database contained therein will no longer be in synchronization with the master database or with other remote locations. Multiple transmissions have been utilized to overcome the possibility of any particular site being inactive. However, multiple transmissions alone do not provide a reliable indication of whether a replica database received an update or change to its master database.